using Drill.Extensibility;

namespace Drill.Core
{
	public interface IConfigurationSource
	{
		/// <summary>
		/// Gets or sets the configuration method.
		/// </summary>
		/// <value>The configuration method.</value>
		DrillBitConfigMethod ConfigurationMethod { get; set; }

		/// <summary>
		/// Gets or sets the configuration object.
		/// </summary>
		/// <value>The configuration object.</value>
		/// <remarks>
		/// The type and value of the <see cref="ConfigurationObject"/> property depends 
		/// on the value of the <see cref="ConfigurationMethod"/> property.
		/// </remarks>
		object ConfigurationObject { get; set; }

		/// <summary>
		/// Gets or sets the key.
		/// </summary>
		/// <value>The key.</value>
		string Key { get; set; }
	}
}